package com.starlink.controller.wechat;

import com.starlink.common.WebResponse;
import com.starlink.common.annotation.WebAccess;
import com.starlink.model.request.AddressRequest;
import com.starlink.model.vo.AdminAddressVO;
import com.starlink.service.AddressService;
import com.starlink.model.vo.AddressVO;
import com.starlink.service.AdminAddressService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.List;

/**
 * @author zhanghong
 */
@RestController
@RequestMapping("/wechat/address")
@Api(value = "【小程序端】地址模块", tags = {"【小程序端】地址模块"})
public class WechatAddressController {
    @Autowired
    private AddressService addressService;
    @Autowired
    private AdminAddressService adminAddressService;

    @WebAccess(login = true)
    @ApiOperation(value = "根据主键查询", httpMethod = "POST")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "success")})
    @PostMapping("/get/{id}")
    public WebResponse<AddressVO> getByKey(HttpServletRequest request, @PathVariable("id") long id) {
        return WebResponse.build(addressService.getByKey(id));
    }

    //@WebAccess(login = true)
    //@ApiOperation("分页查询")
    //@PostMapping("/pageQuery")
    //public WebResponse<PageInfo<AddressVO>> pageQuery(@RequestBody AddressRequest request) {
    //    return WebResponse.build(addressService.pageQuery(request));
    //}

    @WebAccess(login = true)
    @ApiOperation("列表查询")
    @PostMapping("/listQuery")
    public WebResponse<List<AddressVO>> listQuery(@RequestBody AddressRequest request) {
        return WebResponse.build(addressService.listQuery(request));
    }

    @WebAccess(login = true)
    @ApiOperation("新增")
    @PostMapping("/add")
    public WebResponse<Boolean> add(@Valid @RequestBody AddressRequest request) {
        return WebResponse.build(addressService.add(request));
    }

    @WebAccess(login = true)
    @ApiOperation("修改")
    @PostMapping("/update")
    public WebResponse<Boolean> updateByKey(@Valid @RequestBody AddressRequest request) {
        return WebResponse.build(addressService.updateByKey(request));
    }

    @WebAccess(login = true)
    @ApiOperation("删除")
    @PostMapping("/delete/{id}")
    public WebResponse<Boolean> deleteByKey(HttpServletRequest request, @PathVariable("id") long id) {
        return WebResponse.build(addressService.deleteByKey(id));
    }

    @WebAccess(login = true)
    @ApiOperation("商家收货地址查询")
    @PostMapping("/getAddressInfo")
    public WebResponse<AdminAddressVO> getAddressInfo() {
        return WebResponse.build(adminAddressService.getAddressInfo());
    }
}
